home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / filesyst / ncpfs / mars_dos.000 / mars_dos / netpc / capture.c next >
Encoding:
C/C++ Source or Header  |  1996-05-20  |  2.0 KB  |  81 lines

  1. /* capture.c 05-Apr-96 */
  2.  
  3. /****************************************************************
  4.  * (C)opyright (C) 1993,1996  Martin Stover, Marburg, Germany   *
  5.  ****************************************************************/
  6.  
  7. #include "net.h"
  8.  
  9. static int usage(void)
  10. {
  11.   fprintf(stderr, "usage:\t%s  level\n", funcname);
  12.   fprintf(stderr, "\tlevel=0 .. 99\n" );
  13.   return(-1);
  14. }
  15.  
  16. static int parse_argv(uint8 *devname, uint8 *queuename,
  17.                   int argc, char *argv[], int parsemode)
  18. {
  19.   int  k      = 0;
  20.   *devname    = '\0';
  21.   *queuename  = '\0';
  22.   while (++k < argc) {
  23.     uint8 *p  = argv[k];
  24.     if (k == 1) {
  25.       strmaxcpy(devname,   p, 20);
  26.       upstr(devname);
  27.       if (!strcmp(devname, "PRN"))
  28.         strcpy(devname, "LPT1");
  29.     } else if (k == 2) {
  30.       strmaxcpy(queuename, p, 20);
  31.       upstr(queuename);
  32.     }
  33.   }
  34.   return(0);
  35. }
  36.  
  37. static int do_capture(uint8 *drvstr, uint8 *queuestr, int delete)
  38. {
  39.   int result = redir_device_drive(delete ? -1 : 0x3, drvstr, queuestr);
  40.   return(result);
  41. }
  42.  
  43. static int show_capture(uint8 *drvstr)
  44. {
  45.   int result;
  46.   int k =-1;
  47.   uint8 devname[20];
  48.   uint8 remotename[130];
  49.   int  devicetyp;
  50.   while ((result = list_redir(++k, &devicetyp, devname, remotename)) > -1){
  51.     if (result > -1 && devicetyp == 0x3) {
  52.       upstr(devname);
  53.       upstr(remotename);
  54.       if (!drvstr || !*drvstr || !strcmp(devname, drvstr))
  55.         fprintf(stdout, "%-10s captured to %s\n", devname, remotename);
  56.     }
  57.   }
  58.   return(result);
  59. }
  60.  
  61. int func_capture(int argc, char *argv[], int mode)
  62. {
  63.   uint8  devname [22];
  64.   uint8  queuestr[22];
  65.   if (!parse_argv(devname, queuestr, argc, argv, mode)) {
  66.     int result=0;
  67.     if (*queuestr || mode == 1) {
  68.       result=do_capture(devname, queuestr, mode);
  69.       if (result< 0)
  70.         fprintf(stderr, "capture error:%d, device:%s \n", result, devname);
  71.     }
  72.     if (mode != 1)
  73.       show_capture(devname);
  74.     else if (result > -1)
  75.       fprintf(stdout, "Capture of %s removed\n", devname);
  76.     return(result);
  77.   }
  78.   return(1);
  79. }
  80.  
  81.